/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * AplicationFrame.java
 *
 * Created on 07-29-2011, 10:26:35 PM
 */

package Splash;

import java.util.logging.Level;
import java.util.logging.Logger;

import Capa_AccesoADatos.GestorBBDD;
import Capa_Control.Controlador;
import Capa_Presentacion.Gestor;
import Capa_Servicios.GestorDeServicios;


public class AplicationFrame extends javax.swing.JFrame {

    private SplashFrame splashFrame;

    /** Creates new form AplicationFrame */
    public AplicationFrame(SplashFrame splashFrame) {
        this.splashFrame = splashFrame;
        this.splashFrame.setVisible(true);
        //ahora empiezo a setear el porcentaje, 0 al iniciar el constructor
        //todas las acciones en teoria se cargan en el constructor
        //y son esas acciones las que hacen que una aplicacion tarde en cargarse
        setProgress(0, "Cargando componentes...");
        GestorBBDD gestorBaseDatos = new GestorBBDD();
        setProgress(20, "Componentes Cargados!!!");
        //en este caso como no tengo acciones que me demoren la aplicacion
        //invento algunas acciones
        setProgress(40, "Conectandose a la base de datos...");
        
        GestorDeServicios serviciosDeLaAplicacion = new GestorDeServicios(gestorBaseDatos);
        //entre cada porcentaje que seteo deberian acciones que se ejecutan
        setProgress(60, "Conectado a la base!!!");
        //esto solo es un demo
        setProgress(80, "Cargando interfaz grafica...");
        Controlador controlAplicacion = new Controlador(serviciosDeLaAplicacion);
        //de lo que seria un Splash Screen
        setProgress(90, "Interfaz grafica cargada!!!");
        setProgress(100, "Bienvenido");
       this.setVisible(false);
        Gestor gestor= new Gestor(controlAplicacion);
        //los porcentajes los calculo segun las acciones que se ejecuten
    }

    private void setProgress(int percent, String information){
        splashFrame.getLabel().setText(information);
        splashFrame.getProgressBar().setValue(percent);
        
        /*
         este Thread.sleep es solamente para que el Thread se duerma un momento
         * cada vez que ingresamos un nuevo porcentaje al SplashScreen, de lo contrario
         * la barra avanzaria demasiado rapido y no la veriamos, en una
         * aplicacion real, esto no seria nesesario, ya que la aplicacion
         * en verdad se tardaria al cargar acciones y metodos
         */
        try {
            Thread.sleep(500);
        } catch (InterruptedException ex) {
            Logger.getLogger(AplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


}
